/*
 * Contexto.h
 *
 *  Created on: 29/05/2012
 *      Author: natuchis
 */

#ifndef CONTEXTO_H_
#define CONTEXTO_H_

#include <map>
#include <set>
#include <iostream>
using namespace std;

#include "Caracter.h"

typedef pair<char, Caracter> ParCaracter;

class Contexto {

public:

	Contexto();
	~Contexto();
	void agregarCaracter(char carac);
	bool existeCaracter(char carac);
	unsigned long int getFrecuenciaTotal() const;
	void setExcluidos(set<char> *excluidos);
	unsigned long int getFrecuenciaTotalExcluidos(set<char> *excluidos);
	void actualizarContexto(char carac);

	unsigned long int getFrecuenciaEsc() const;

	unsigned long int getCantExcluidosPresentesEnContexto(set<char> *excluidos);

	void agregarCaracteresNoExcluidos(map<string, Caracter> &mapa, set<char> *excluidos);

	void getMapa(map<string,Caracter> &mapa, set<char> *excluidos);

private:

	map <char,Caracter> *mapaCtx;
	map <char,Caracter>::iterator itMapaCtx;

	unsigned long int cantTotalFrec;

};

#endif /* CONTEXTO_H_ */
